/**
 * @项目名称: shaoshaohuo
 * @文件名称: ShareUtil.java
 * @Date: 2015年12月14日
 * @Copyright: 2015 www.longinf.com Inc. All rights reserved.
 * 注意：本内容仅限于北京龙息科技有限公司内部传阅，禁止外泄以及用于其他的商业目的
 */
package com.shaoshaohuo.app.utils.sharesdk;

import android.app.Dialog;
import android.content.Context;

import com.shaoshaohuo.app.entity.BaseEntity;
import com.shaoshaohuo.app.net.HttpRequest.RequestListener;
import com.shaoshaohuo.app.net.RequestService;
import com.shaoshaohuo.app.utils.ToastUtil;

import java.util.HashMap;

import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.Platform.ShareParams;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.onekeyshare.OnekeyShare;

/**
 * 分享入口
 *
 * @Project: shaoshaohuo
 * @Author: Osborn
 * @Date: 2015年12月14日
 */
public class ShareFactory {

    private static Context context;

    public static final int SHARE_TYPE_PURCHASE = 1;
    public static final int SHARE_TYPE_SUPPLY = SHARE_TYPE_PURCHASE + 1;
    public static final int SHARE_TYPE_APP = SHARE_TYPE_SUPPLY + 1;


    /**
     * @param context //	 * @param title		title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间使用
     *                //	 * @param titleUrl		titleUrl是标题的网络链接，仅在人人网和QQ空间使用
     *                //	 * @param text		text是分享文本，所有平台都需要这个字段
     *                //	 * @param imagePath		imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
     *                //	 * @param url		url仅在微信（包括好友和朋友圈）中使用
     *                //	 * @param comment		comment是我对这条分享的评论，仅在人人网和QQ空间使用
     *                //	 * @param site		site是分享此内容的网站名称，仅在QQ空间使用
     *                //	 * @param siteUrl		siteUrl是分享此内容的网站地址，仅在QQ空间使用
     */
    public static void showShare(Context context, ShareParams paramsToShare, final Dialog dialog) {
        ShareFactory.context = context;
        ShareSDK.initSDK(context);
        OnekeyShare oks = new OnekeyShare();
        // 关闭sso授权
        oks.disableSSOWhenAuthorize();
//指定分享的平台，如果为空，还是会调用九宫格的平台列表界面
        if (paramsToShare != null) {
            oks.setPlatform(paramsToShare.getVenueName());
        }
        //隐藏编辑页面
//		oks.setSilent(false);
        // 分享时Notification的图标和文字 2.5.9以后的版本不调用此方法
        // oks.setNotification(R.drawable.ic_launcher,
        // getString(R.string.app_name));
        // title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间使用
        oks.setTitle(paramsToShare.getTitle());
        // titleUrl是标题的网络链接，仅在人人网和QQ空间使用
        oks.setTitleUrl(paramsToShare.getTitleUrl());
        // text是分享文本，所有平台都需要这个字段
        oks.setText(paramsToShare.getText());
        // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
        if (paramsToShare.getImageUrl() != null) {
            oks.setImageUrl(paramsToShare.getImageUrl());
        }
        if (paramsToShare.getImageArray() != null) {
            oks.setImageArray(paramsToShare.getImageArray());
        }
        // url仅在微信（包括好友和朋友圈）中使用
        if (paramsToShare.getUrl() != null) {
            oks.setUrl(paramsToShare.getUrl());
        }
        // comment是我对这条分享的评论，仅在人人网和QQ空间使用
        if (paramsToShare.getComment() != null) {
            oks.setComment(paramsToShare.getComment());
        }
        // site是分享此内容的网站名称，仅在QQ空间使用
        if (paramsToShare.getSite() != null) {
            oks.setSite(paramsToShare.getSite());
        }
        // siteUrl是分享此内容的网站地址，仅在QQ空间使用
        if (paramsToShare.getSiteUrl() != null) {
            oks.setSiteUrl(paramsToShare.getSiteUrl());
        }
        if (paramsToShare.getAddress() != null) {
            oks.setAddress(paramsToShare.getAddress());
        }

        oks.setCallback(new PlatformActionListener() {

            @Override
            public void onError(Platform arg0, int arg1, Throwable arg2) {
                ToastUtil.toast("分享失败");
                if (dialog != null) {
                    dialog.dismiss();
                }
            }

            @Override
            public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
                RequestService.getInstance().shareGetScore(ShareFactory.context, BaseEntity.class, new RequestListener() {

                    @Override
                    public void onSuccess(int requestCode, BaseEntity resultData) {
                        ToastUtil.toast("分享成功，获得10积分");
                        if (dialog != null) {
                            dialog.dismiss();
                        }
                    }

                    @Override
                    public void onFailed(int requestCode, Exception error, String msg) {
                        if (dialog != null) {
                            dialog.dismiss();
                        }
                    }

                });
            }

            @Override
            public void onCancel(Platform arg0, int arg1) {
                ToastUtil.toast("分享取消");
                if (dialog != null) {
                    dialog.dismiss();
                }
            }
        });

        // 启动分享GUI
        oks.show(context);
    }

}
